const wx = require('nodejs-websocket');
const clients = []; // 存储所有连接的客户端
const users = [];

// 创建WebSocket服务器
const server = wx.createServer((connect) => {
    console.log('有用户连接');

    // 将新连接添加到客户端列表中
    clients.push(connect);

    // 当连接关闭时，从客户端列表中移除
    connect.on('close', () => {
        console.log('连接断开');
        let index = clients.indexOf(connect);
        if (index !== -1) {
            clients.splice(index, 1);
        }
    });

    // 当连接发生错误时，从客户端列表中移除（可选，取决于您的错误处理策略）
    connect.on('error', (err) => {
        console.log('连接断开:' + err);
        let index = clients.indexOf(connect);
        if (index !== -1) {
            clients.splice(index, 1);
        }
    });

    // 接收客户端的消息消息
    connect.on('text', (data) => {
        let newdata = JSON.parse(data);
        if (newdata.type === "add") {
            users.push(newdata.name);
            // 向所有用户发送现有的用户信息（广播）
            broadcast({ type: "users", users: users });
        } else if (newdata.type === "del") {
            users = users.filter(item => item !== newdata.name);
            // 向所有用户发送现有的用户信息（广播）
            broadcast({ type: "users", users: users });
        }
        else{
            broadcast(newdata)
        }
    });
});

// 广播函数：向所有连接的客户端发送消息
function broadcast(message) {
    clients.forEach(client => {
            client.send(JSON.stringify(message));
    });
}

// 服务器监听80端口
server.listen(8001, () => {
    console.log('服务器启动成功  '+"http://localhost:8001");
});